package fi.uba.algocontrol.view;


import fi.uba.algocontrol.model.ObjetoPosicionableGenerico;
import fi.uba.algocontrol.model.pistas.Entrada;
import fi.uba.algocontrol.model.pistas.Pista;
import fiuba.algo3.titiritero.dibujables.Cuadrado;
import fiuba.algo3.titiritero.modelo.ObjetoDibujable;
import fiuba.algo3.titiritero.modelo.ObjetoPosicionable;
import fiuba.algo3.titiritero.modelo.SuperficieDeDibujo;

import java.util.Collection;
import java.util.LinkedList;

public class PistaView extends Cuadrado
{
    EntradasView entradasView = null;
    Collection<ObjetoDibujable> detalles;

    public PistaView(int ancho, int alto, ObjetoPosicionable objetoPosicionable) {

        super(ancho, alto, objetoPosicionable);

        this.entradasView = new EntradasView();
        this.detalles = new LinkedList<ObjetoDibujable>();

        this.inicializarDetalles();

        for(Entrada entrada : ((Pista)objetoPosicionable).getEntradas())
        {
            EntradaView entradaView = new EntradaView((int) entrada.getAncho(),(int) entrada.getLargo(), entrada);

            this.entradasView.add(entradaView);
        }
    }

    public void dibujar(SuperficieDeDibujo superficieDeDibujo)
    {
        super.dibujar(superficieDeDibujo);

        for (ObjetoDibujable detalle : this.detalles)
            detalle.dibujar(superficieDeDibujo);

        for(EntradaView entradaView : this.entradasView)
            entradaView.dibujar(superficieDeDibujo);
    }

    protected void inicializarDetalles()
    {
        Pista pista = (Pista)this.getPosicionable();

        int y = pista.getY() + pista.getAlto()/3;
        int segmentoPx = 2;

        for (int i=0; i < pista.getAncho(); i+=segmentoPx*2)
        {
            Cuadrado segmento = new Cuadrado(segmentoPx,segmentoPx,new ObjetoPosicionableGenerico(pista.getX()+i,y));
            this.detalles.add(segmento);
        }

        y = y + pista.getAlto()/3;

        for (int i=0; i < pista.getAncho(); i+=segmentoPx*2)
        {
            Cuadrado segmento = new Cuadrado(segmentoPx,segmentoPx,new ObjetoPosicionableGenerico(pista.getX()+i,y));
            this.detalles.add(segmento);
        }

    }
}
